// //定义单个属性
// const count:number=1;
// //定义对象
// interface xiangcunaiqing{
//     name:string,
//     age:number,
//     like?:Blob//？可传可不传
// }

// const obj:xiangcunaiqing={
//     name:'谢大师',
//     age:18
// }

// const newObj:{
//     name:string,
//     age:number
// }={
//     name:'刘能',
//     age:0
// }
// //定义数组
// const arr:string[]=['zhangsan','111']
// //定义函数 必须返回一个字符串
// const fn:()=> string=()=>{
//     return ''
// }
// //定义函数 没有返回值 使用void
// const fn1:()=> void=()=>{
    
// }
// console.log(11111);

//定义类
// class Person{
//     fn=()=>{
//         console.log(111);
//     }
// }
// const newPerson=new Person()
// newPerson.fn()

//tsc --init 在根目录拥有我们的tsconfig.json配置文件
//npm init -y 生成package.json

//枚举
// enum color{
//     red='red',
//     yellow='yellow'
// }
// console.log();

//求和
// function fn(arr:Array<number>){
//     console.log(arr);
//     let sum:number=0
//     arr.forEach((item:number)=>{
//         if(typeof item==="number"){
//             sum+=item
//         }
//     })
//     return sum
// }
// console.log(fn([1,2,3,4,5]));
// //二维转一维
// function fn1(arr:Array<number|Array<number>>){
//     console.log(arr);
//     let newArr:Array<number>=[]
//     arr.forEach((item:Array<number>|number)=>{
//         if(Array.isArray(item)){
//             newArr.push(...fn1(item))
//         }
//         else{
//             newArr.push(item)
//         }
//     })
//     return newArr
// }
// console.log(fn1([[1,2],[3,4],5]));

// //冒泡排序
// //函数没有返回值 添加 :void
// const fn2=(arr:Array<number>):Array<number>=>{
//     // let newArr:Array<number>=[]
//     let length=arr.length
//     if(length<=1){
//         return arr
//     }
//     else{
//        for (let i = 0; i < length; i++) {
//            for (let j = i+1; j < length; j++) {
//                 if(arr[j]<arr[i]){
//                     let temp=arr[j]
//                     arr[j]=arr[i]
//                     arr[i]=temp
//                 }
//            }
//        }
//     }
//     return arr
// }
// console.log(fn2([3,4,1,2,5,9,7,13]),222);

// //斐波那契 这个数列从第3项开始，每一项都等于前两项之和
// //1,1,2,3,5,8,13,21,34,55,89,144
// const fn3=(n:number):number=>{
//     // let arr:Array<number>=[]
//     if(n<=2){
//         return 1
//     }
//     else{
//         return fn3(n-1)+fn3(n-2)
//     }
// }
// console.log(fn3(3));

// /*
// class类
// 1.extents 实现我们的继承
// 2.public 共有属性 (默认)
// 3.private 私有属性 (只在当前这个类中可以访问)
// 4.protected 受保护的 (当前类和派生类)
// 5.readonly 只读
// 6.static 定义静态属性
// */

// class Student{
//     readonly name:string
//     constructor(name:string='徐伟'){  
//         this.name=name
//     }
//     private age=18
//     //共有
//     public sayHello(){
//         console.log("hello",this.age);
//     }
// }
// //继承 实现我们的继承 属性+方法 只能继承public 公有属性
// class Sub extends Student{
//     sayBye(){
//         console.log(this.name);
//     }
// }

// // const my_Student=new Student('111')
// // console.log(my_Student.name);
// const my_Sub=new Sub()
// console.log(my_Sub);

// //函数 可选参数?和默认参数 剩余参数 函数重载
// function baseInfo(name:string,age:number,sex:string='男',like?:string){
//     return `我的名字是${name},我的年龄是${age},我的性别是${sex},我的爱好是${like}`
// }
// console.log(baseInfo("张三",18,"1"));


//字符串翻转
function Str(str:string){
    let tr:string=''
    for(var i=str.length-1;i>=0;i--){
        tr+str[i]
    }
    return tr
}
console.log(Str('abc'));
//找最长的单词
function Max(arr:Array<string>){
    let str:Array<string>=arr.sort((x:string,y:string)=>{
        return x.length-y.length
    })
    return str[arr.length-1]
}
console.log(Max(['aaa','bbb','cccccccccc','ddddd','e']));
//驼峰
function stRing(str:string){
    let arr:Array<string>=str.split('-')
    for(var i=1;i<arr.length;i++){
        arr[i]=arr[i][0].toUpperCase()+arr[i].substr(1);
    }
    return arr.join('')
}
console.log(stRing('ding-xiao-lei'));


